package desmontec.alertas

import desmontec.documentos.DPG
import desmontec.sistema.SecUser
import desmontec.util.Constantes

class AlertaDPGService {
	
	AlertaDeletadoService alertaDeletadoService
	def springSecurityService
	
	def adicionaAlertaDPG(DPG dpg, TipoAlerta tipoAlerta) { 
		
		if (!alertaDeletadoService.alertaJaDeletado(dpg.numero)) {
			if (tipoAlerta == TipoAlerta.ALERTA_DATA_INVALIDA){
				def alertasAnteriores = AlertaDPG.findAllByDpg(dpg)
				for (a in alertasAnteriores){
					a.delete(flush:true)
				}
			}
			
			def alertaAnterior = AlertaDPG.findAllByDpg(dpg)
			if (alertaAnterior.size == 0 ){
				def alertaNovo = new AlertaDPG(dpg: dpg, flagTipo:tipoAlerta, flagAlertar:"S")
				alertaNovo.save(flush:true)
			}
		}
		
	}
	
	def alertasDoUsuario(TipoAlerta tipoAlerta) {
		def usuario = (SecUser) springSecurityService.getCurrentUser()
		def dpgs = DPG.findAllByUsuario(usuario)
		List<AlertaDPG> alertasDataInvalida = new ArrayList<AlertaDPG>()
		for (d in dpgs){
			def alertasDpg = AlertaDPG.findAllByDpgAndFlagTipo(d, tipoAlerta)
			for (a in alertasDpg){
				alertasDataInvalida.add(a)
			}
		}
		return alertasDataInvalida
	}
	
	def alertasAtivosDoUsuario (TipoAlerta tipoAlerta) {
		def usuario = (SecUser) springSecurityService.getCurrentUser()
		def dpgs = DPG.findAllByUsuario(usuario)
		List<AlertaDPG> alertasAtivos = new ArrayList<AlertaDPG>()
		for (d in dpgs){
			def alertasDpg = AlertaDPG.findAllByDpgAndFlagTipo(d, tipoAlerta)
			for (a in alertasDpg){
				if (a.flagAlertar == Constantes.ALERTAR){
					alertasAtivos.add(a)
				}
			}
		}
		return alertasAtivos
	}

}
